package com.whately.core.redis.distributelock;

import java.lang.annotation.*;
/**
 * 描述: 分布式锁注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WhatelyDistributedLock {

    String lockKey() default "";

    String dsCode() default "";

    //加锁时是否等待标识，默认不等，直接返回加锁结果
    boolean waitFlag() default false;

    //获取锁的最长等待时间，单位秒，默认5秒，超过5秒就返回
    int waitLockTime() default 2;

    //获取锁的重试次数
    int waitLockRetryCount() default 1;

    //任务执行完毕之后，是否需要重设一个redis的key，保持一段时间内其余的任务无法获取
    //默认锁定3分钟
    int keyDurationSecondsInRedis() default 180;
}
